#!/bin/bash

# 设置颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # 无颜色

# 输出带颜色的信息
info() {
  echo -e "${GREEN}[信息]${NC} $1"
}

warn() {
  echo -e "${YELLOW}[警告]${NC} $1"
}

error() {
  echo -e "${RED}[错误]${NC} $1"
}

# 检查Node.js是否安装
if ! command -v node &> /dev/null; then
  error "未找到Node.js，请先安装Node.js"
  exit 1
fi

# 检查npm是否安装
if ! command -v npm &> /dev/null; then
  error "未找到npm，请先安装npm"
  exit 1
fi

# 安装后端依赖
info "清理可能存在的 node_modules 文件夹..."
rm -rf node_modules package-lock.json

info "安装后端依赖..."
npm install

info "特别安装 sharp 库..."
npm install sharp --platform=darwin --arch=x64

info "检查 sharp 库是否正确安装..."
if node -e "require('sharp'); console.log('sharp 已成功安装');" &> /dev/null; then
  info "sharp 库安装成功"
else
  warn "sharp 库安装可能有问题，尝试替代方法..."
  npm install sharp --unsafe-perm --platform=darwin --arch=x64
  if node -e "require('sharp'); console.log('sharp 已成功安装');" &> /dev/null; then
    info "sharp 库现在安装成功"
  else
    error "sharp 库安装失败，请尝试手动安装："
    error "npm install sharp --unsafe-perm"
    error "如果仍然失败，可能需要安装系统依赖："
    error "brew install vips (macOS) 或适用于您系统的等效命令"
  fi
fi

# 安装前端依赖
info "安装前端依赖..."
cd frontend && npm install && cd ..

info "所有依赖安装完成"
info "请运行 ./start.sh (Linux/Mac) 或 start.bat (Windows) 启动应用" 